package com.kjlink.internal.report4vue.base.json;

import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;

import java.io.IOException;
import java.math.BigDecimal;
import java.text.DecimalFormat;

/**
 * 描述:
 *
 * @author Vic.xu
 * @since 2025-03-18 16:34
 */
public class DynamicBigDecimalSerializer extends JsonSerializer<BigDecimal> {
    private static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat();
    static {
        // 最多保留2位小数
        DECIMAL_FORMAT.setMaximumFractionDigits(2);
        // 最少保留0位小数
        DECIMAL_FORMAT.setMinimumFractionDigits(0);
        // 不总是显示小数点
        DECIMAL_FORMAT.setDecimalSeparatorAlwaysShown(false);
    }
    @Override
    public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider provider) throws IOException {
        if (value != null) {
            gen.writeString(DECIMAL_FORMAT.format(value));
        }
    }
}
